package com.example.demo.signletonMode;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 皇帝
 */
public class Emperor {

    // 定义最多能产生的实例数量
    private static int maxNumOfEmperor = 2;

    // 皇帝名称list每个对象都是私有属性
    private static List<String> nameList = new ArrayList<>();

    // 容纳所有皇帝
    private static List<Emperor> emperorList = new ArrayList<>();

    // 当前皇帝序列号
    private static int countNumOfEmperpr = 0;

    static {
        for (int i = 0; i<maxNumOfEmperor;i++){
            emperorList.add(new Emperor("皇"+i+1+"帝"));
        }
    }

    private Emperor(){//世俗和道德约束你，目的就是不产生第二个皇帝
    }

    //传入皇帝名称，建立一个皇帝对象
    private Emperor(String name){
        nameList.add(name);
    }

    //随机获得一个皇帝对象
    public static Emperor getInstance(){
        Random random = new Random();
        //随机拉出一个皇帝，只要是个精神领袖就成
        countNumOfEmperpr = random.nextInt(maxNumOfEmperor);
        return emperorList.get(countNumOfEmperpr);
    }

    //皇帝发话了
    public static void say(){
        System.out.println(nameList.get(countNumOfEmperpr));
    }
}
